我們知道,在一個Vue的項目中,根實中的data可以直接是一個對象,但是在子組件中,就必須是一個函數的形式,這是爲什麼呢?
因爲根實例只有一個,但是子組件會有很多,如果每一個data都是一個對象的時候,很容易在引用的時候,將其重複引用,或者是不同組件中中的相同屬性,會互相影響,這涉及到了閉包的問題。但是如果子組件的data是一個函數的話,那麼獲取data就是執行函數,其中返回的對象是獨一無二的。
v-if是操作了DOM,v-show只是操作這個元素的display屬性,所以在大量的操作DOM時,推薦使用show,使用if的話,對性能優化沒有太大的好處。
答案是建議不要,v-for和v-if在一個標籤中的時候,是會先執行for然後再進行if判斷的,那麼不管有沒有,都會進行一次循環,並且上面提到,if是直接操作DOM的,非常影響性能,所以不要連用。
props
$emit / $on
provide/inject
attrs/listeners
在項目中,的Vue原型中加入一個bus,它是一個Vue的實例,那麼,在所有的子組件中,都可以通過this.$bus.$emit / $on
來進行發佈訂閱通訊,建議是小型項目使用,大型項目還是用vuex
Vue3中的响应式原理是用了ES6中的Proxy實現的,優點是可以進行深度遍歷,節省性能。
今天就到這裏了,寫了太多的話 ,下次就沒得寫啦